package com.zjny.enums;

import cn.hutool.core.util.StrUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.ArrayList;
import java.util.List;

/**
 * packageName com.zjny.enums
 *
 * @author cui haida
 * @version JDK 8
 * 2025/6/18
 */
@AllArgsConstructor
@Getter
public enum SymbolEnum {
    /**
     * 符号声明
     */
    DH_SYMBOL("顿号", "、"),
    WH_SYMBOL("逗号", "，"),
    MH_SYMBOL("冒号", "："),
    FH_SYMBOL("分号", "；"),
    JH_SYMBOL("句号", "。"),
    TH_SYMBOL("叹号", "！"),
    YH_SYMBOL("问号", "？"),
    ;


    public final String name;

    public final String replaceName;

    /**
     * 获取符号列表。
     * 该方法遍历SymbolEnum枚举中的所有元素，并将它们的replaceName属性添加到一个列表中，最后返回这个列表。
     *
     * @return List<String> 返回包含所有符号名称的列表。
     */
    public static List<String> getSymbolList() {
        // 创建一个空列表来存储符号名称
        List<String> symbolList = new ArrayList<>();
        // 遍历SymbolEnum枚举，将每个枚举项的replaceName属性添加到列表中
        for (SymbolEnum symbolEnum : SymbolEnum.values()) {
            symbolList.add(symbolEnum.replaceName);
        }

        return symbolList;
    }


    /**
     * 根据名称获取枚举值。
     *
     * @param name 要查找的枚举名称。
     * @return 如果找到匹配的枚举名称，则返回对应的枚举值；如果没有找到，则返回null。
     */
    public static SymbolEnum getEnumByName(String name) {
        // 遍历所有枚举值，查找名称匹配的枚举
        for (SymbolEnum symbolEnum : SymbolEnum.values()) {
            if (StrUtil.equals(symbolEnum.name, name)) {
                return symbolEnum;
            }
        }
        // 如果没有找到匹配的枚举，则返回null
        return null;
    }
}